home *** CD-ROM | disk | FTP | other *** search
/ Dynamic HTML Construction Kit / Dynamic HTML Construction Kit.iso / earthlink / nscomm / java40.jar / sun / io / CharToByteConverter.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-03  |  3.0 KB  |  132 lines

  1. package sun.io;
  2.  
  3. import java.io.CharConversionException;
  4. import java.io.UnsupportedEncodingException;
  5.  
  6. public abstract class CharToByteConverter {
  7.    protected boolean subMode = true;
  8.    protected byte[] subBytes = new byte[]{63};
  9.    protected int charOff;
  10.    protected int byteOff;
  11.    protected int badInputLength;
  12.    private static String pkgString;
  13.  
  14.    public static CharToByteConverter getDefault() {
  15.       SecurityManager.enablePrivilege("UniversalPropertyRead");
  16.       String var0 = System.getProperty("file.encoding", "8859_1");
  17.       SecurityManager.revertPrivilege();
  18.  
  19.       try {
  20.          return getConverter(var0);
  21.       } catch (UnsupportedEncodingException var1) {
  22.          return new CharToByteDefault();
  23.       }
  24.    }
  25.  
  26.    public static CharToByteConverter getConverter(String var0) throws UnsupportedEncodingException {
  27.       String var1 = CharacterEncoding.aliasName(var0);
  28.       if (var1 == null) {
  29.          var1 = var0;
  30.       }
  31.  
  32.       Class var2;
  33.       try {
  34.          var2 = Class.forName(pkgString + ".CharToByte" + var1);
  35.       } catch (ClassNotFoundException var6) {
  36.          throw new UnsupportedEncodingException();
  37.       }
  38.  
  39.       CharToByteConverter var3 = null;
  40.  
  41.       try {
  42.          var3 = (CharToByteConverter)var2.newInstance();
  43.          return var3;
  44.       } catch (IllegalAccessException var4) {
  45.          throw new UnsupportedEncodingException();
  46.       } catch (InstantiationException var5) {
  47.          throw new UnsupportedEncodingException();
  48.       }
  49.    }
  50.  
  51.    public abstract String getCharacterEncoding();
  52.  
  53.    public abstract int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws MalformedInputException, UnknownCharacterException, ConversionBufferFullException;
  54.  
  55.    public byte[] convertAll(char[] var1) throws MalformedInputException {
  56.       this.reset();
  57.       boolean var2 = this.subMode;
  58.       this.subMode = true;
  59.       byte[] var3 = new byte[this.getMaxBytesPerChar() * var1.length];
  60.  
  61.       byte[] var4;
  62.       try {
  63.          int var7 = this.convert(var1, 0, var1.length, var3, 0, var3.length);
  64.          var7 += this.flush(var3, this.nextByteIndex(), var3.length);
  65.          byte[] var8 = new byte[var7];
  66.          System.arraycopy(var3, 0, var8, 0, var7);
  67.          var4 = var8;
  68.       } catch (ConversionBufferFullException var12) {
  69.          throw new InternalError("this.getMaxBytesPerChar returned bad value");
  70.       } catch (UnknownCharacterException var13) {
  71.          throw new InternalError();
  72.       } finally {
  73.          this.subMode = var2;
  74.       }
  75.  
  76.       return var4;
  77.    }
  78.  
  79.    public abstract int flush(byte[] var1, int var2, int var3) throws MalformedInputException, ConversionBufferFullException;
  80.  
  81.    public abstract void reset();
  82.  
  83.    public boolean canConvert(char var1) {
  84.       try {
  85.          char[] var2 = new char[1];
  86.          byte[] var3 = new byte[3];
  87.          var2[0] = var1;
  88.          this.convert(var2, 0, 1, var3, 0, 3);
  89.          return true;
  90.       } catch (CharConversionException var4) {
  91.          return false;
  92.       }
  93.    }
  94.  
  95.    public abstract int getMaxBytesPerChar();
  96.  
  97.    public int getBadInputLength() {
  98.       return this.badInputLength;
  99.    }
  100.  
  101.    public int nextCharIndex() {
  102.       return this.charOff;
  103.    }
  104.  
  105.    public int nextByteIndex() {
  106.       return this.byteOff;
  107.    }
  108.  
  109.    public void setSubstitutionMode(boolean var1) {
  110.       this.subMode = var1;
  111.    }
  112.  
  113.    public void setSubstitutionBytes(byte[] var1) throws IllegalArgumentException {
  114.       if (var1.length > this.getMaxBytesPerChar()) {
  115.          throw new IllegalArgumentException();
  116.       } else {
  117.          this.subBytes = new byte[var1.length];
  118.          System.arraycopy(var1, 0, this.subBytes, 0, var1.length);
  119.       }
  120.    }
  121.  
  122.    public String toString() {
  123.       return "CharToByteConverter: " + this.getCharacterEncoding();
  124.    }
  125.  
  126.    static {
  127.       SecurityManager.enablePrivilege("UniversalPropertyRead");
  128.       pkgString = System.getProperty("file.encoding.pkg");
  129.       SecurityManager.revertPrivilege();
  130.    }
  131. }
  132.